<template>
  <!-- 封装轮播图组件 -->
  <div class="swiper-container" ref="cur">
    <div class="swiper-wrapper">
      <!-- 轮播图 -->
      <div class="swiper-slide" v-for="(item, index) in list" :key="index">
        <img :src="item.imgUrl" />
      </div>
    </div>
    <!-- 如果需要分页器 -->
    <div class="swiper-pagination"></div>

    <!-- 如果需要导航按钮 -->
    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
  </div>
</template>

<script>
import Swiper from "swiper";
export default {
  name: "Carousel",
  props: ["list"],
  data() {
    return {};
  },

  mounted() {},

  methods: {},
  watch: {
    list: {
      //为什么watch监听不到list，因为数据从来没有发生过变化（数据是父亲给的，给的时候就是一个对象，对象里面该有的数据都有）
      //立即监听，不管数据有没有变化，上来立即执行一次
      immediate: true,
      handler() {
        //只能监听到数据已经有了，但是v-for动态渲染结构还是没有办法确定，因此还是需要nextTick
        this.$nextTick(() => {
          // eslint-disable-next-line no-unused-vars
          var mySwiper = new Swiper(
            // document.querySelector(".swiper-container"),
            this.$refs.cur, //vue中获取DOM节点
            {
              // direction: 'vertical', // 垂直切换选项
              loop: true, // 循环模式选项
              // 如果需要分页器
              pagination: {
                el: ".swiper-pagination",
                clickable: true, //点击小圆圈可以切换
              },
              // 如果需要前进后退按钮
              navigation: {
                nextEl: ".swiper-button-next",
                prevEl: ".swiper-button-prev",
              },
            }
          );
        });
      },
    },
  },
};
</script>

<style lang="scss" scoped>
</style>